package com.yangchao.quarkus.resource;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.eclipse.microprofile.config.inject.ConfigProperty;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@Path("/actions")
public class HobbyResource {

    // 配置文件中不存在名为not.exists.config的配置项
    @ConfigProperty(name = "not.exists.config",defaultValue = "default value")
    String notExistsConfig;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello RESTEasy, " + LocalDateTime.now() + ", [" + notExistsConfig + "]";
    }
    @Path("/hello01")
    @GET()
    @Produces(MediaType.TEXT_PLAIN)
    public String hello01() {
        List<String> list = new ArrayList<>();

        // 可以用静态方法取得Config实例
        Config config = ConfigProvider.getConfig();

        // getValue可取得指定配置项的指定类型值
        String greet = config.getValue("greeting.message", String.class);

        list.add(greet);

        // getOptionalValue可以将配置项的值包状为Optional对象，如果配置项不存在，也不会报错
        Optional<String> optional = config.getOptionalValue("not.exists.config", String.class);

        // 函数式编程：只用optional中有对象时，才会执行list.add方法
        optional.ifPresent(list::add);

        return "Hello RESTEasy, " + LocalDateTime.now() + ", " + list;
    }
}
